﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Arthus
{
    public partial class stavkaNalogaProdaje : Form
    {
        public static string IDstavke;
        public static string IDartikla;
        public stavkaNalogaProdaje(string StavkaID, string ArtikalID)
        {
            InitializeComponent();
            IDstavke = StavkaID;
            IDartikla = ArtikalID;
            posjedObjekat = new Posjed();
            posjedObjekat.PopuniComboBoxMaloprodaja(comboBoxProdajnaJedinica);
            textBoxProdajnaVrednost.ReadOnly = true;
            textBoxVrednostNivelacije.ReadOnly = true;
        }
        Posjed posjedObjekat = null;
        STV stvObjekat = null;
        Artikal artikalObjekat = null;
        ZAG zagObjekat = null;
        private void stavkaNalogaProdaje_Load(object sender, EventArgs e)
        {
            ProveraPostojanostiStavke();
        }
        private void ProveraPostojanostiStavke() {
            stvObjekat = new STV();
            if (IDstavke.Length > 0 && stvObjekat.PostojiUBaziIliNeNaOsnovuID(Convert.ToInt32(IDstavke)))
            {
                buttonDodaj.Enabled = true;
                buttonIzmeni.Enabled = true;
            }
            else
            {
                buttonDodaj.Enabled = true;
                buttonIzmeni.Enabled = false;
            }
        }

        private void stavkaNalogaProdaje_FormClosing(object sender, FormClosingEventArgs e)
        {
            IDartikla = null;
            IDstavke = null;
        }

        private void stavkaNalogaProdaje_Activated(object sender, EventArgs e)
        {
            stvObjekat = new STV();
            stvObjekat.PopuniKontroleUStavkaNalogaProdajeFormi(comboBoxProdajnaJedinica, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla,
                textBoxArtikalNaziv, textBoxIspodArtiklaNaziv, textBoxMPCenaArtikla, textBoxMPCenaArtikla, textBoxKolicina, textBoxProdajnaCena, textBoxProdajnaVrednost,
                textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije);
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojeva();
            ProveraPostojanostiStavke();
        }

        private void PopunjavanjeTextBoxovaPosleUnosaNekihBrojeva() {
            if (textBoxKolicina.Text.Trim().Length > 0 && textBoxProdajnaCena.Text.Trim().Length > 0 && textBoxProdajnaVrednost.Text.Trim().Length > 0
                && textBoxKolicina.Text.Trim().Length > 0 && textBoxKolicina.Text != "-" && textBoxKolicina.Text != "." && textBoxMPCenaArtikla.Text.Trim().Length>0) {
                    try
                    {
                        labelPoruka.Text = "";
                        buttonDodaj.Enabled = true;
                        buttonIzmeni.Enabled = true;
                        if (Convert.ToDecimal(textBoxKolicina.Text) != 0 && Convert.ToDecimal(textBoxProdajnaCena.Text) != 0)
                        {
                            textBoxProdajnaVrednost.Text = String.Format("{0:0.00}", Convert.ToDecimal(textBoxKolicina.Text) * Convert.ToDecimal(textBoxProdajnaCena.Text));
                            textBoxKolicinaZaNivelaciju.Text = textBoxKolicina.Text;
                            decimal razlika = 0.00m;
                            if (textBoxMPCenaArtikla.Text.Contains('/'))
                            {
                                razlika = Convert.ToDecimal(textBoxProdajnaCena.Text) - Convert.ToDecimal(Razno.IseciStringDoIzabranogChara(textBoxMPCenaArtikla.Text, ' '));
                            }
                            else
                            {
                                razlika = Convert.ToDecimal(textBoxProdajnaCena.Text) - Convert.ToDecimal(textBoxMPCenaArtikla.Text);
                            }
                            if (razlika > 0)
                            {
                                textBoxVrednostNivelacije.Text = String.Format("{0:0.00}", razlika * Convert.ToDecimal(textBoxKolicinaZaNivelaciju.Text));
                            }
                            else
                            {
                                textBoxVrednostNivelacije.Text = "0.00";
                            }
                            /*textBoxVrednostNivelacije.Text = String.Format("{0:0.00}", (Convert.ToDecimal(textBoxProdajnaCena.Text) - Convert.ToDecimal(textBoxMPCenaArtikla.Text)) *
                                Convert.ToDecimal(textBoxKolicinaZaNivelaciju.Text));*/
                        }
                        else
                        {
                            textBoxProdajnaVrednost.Text = "" + 0.00m;
                        }
                    }
                    catch (FormatException fe) {
                        labelPoruka.Text = "Minus mora biti na početku!";
                        buttonDodaj.Enabled = false;
                        buttonIzmeni.Enabled = false;
                    }
            }
        }

        private void textBoxKolicina_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTackeIMinusa(sender, e);
        }
        private void textBoxProdajnaCena_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        }
        private void textBoxKolicinaZaNivelaciju_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliUnosSamoBrojevaIJedneTacke(sender, e);
        }
        private void textBoxVrednostNivelacije_TextChanged(object sender, EventArgs e)
        {
            Razno.DozvoliMinusSamoNaPocetku(textBoxVrednostNivelacije);
        }
        private void textBoxKolicina_KeyUp(object sender, KeyEventArgs e)
        {
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojeva();
        }
        private void textBoxProdajnaCena_KeyUp(object sender, KeyEventArgs e)
        {
            PopunjavanjeTextBoxovaPosleUnosaNekihBrojeva();
        }

        private void TABKaoENTER(KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                SelectNextControl(ActiveControl, true, true, true, true);
            }
        }

        private void textBoxIzborArtiklaPremaKataloskomBroju_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)//ukoliko se unese taster Enter
            {
                this.Cursor = Cursors.WaitCursor;
                artikalObjekat = new Artikal();
                artikalObjekat.PretragaArtikalaStavkaNalogaProdaje(textBoxIzborArtiklaPremaKataloskomBroju, textBoxIzborArtiklaPremaOznaci, textBoxKataloskiBroj,
                    textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla, textBoxArtikalNaziv, textBoxMPCenaArtikla, textBoxProdajnaCena);
                stvObjekat = new STV();
                stvObjekat.PopuniKontroleUStavkaNalogaProdajeFormi(comboBoxProdajnaJedinica, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla,
                textBoxArtikalNaziv, textBoxIspodArtiklaNaziv, textBoxMPCenaArtikla, textBoxMPCenaArtikla, textBoxKolicina, textBoxProdajnaCena, textBoxProdajnaVrednost,
                textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije);
                ProveraPostojanostiStavke();
                PopunjavanjeTextBoxovaPosleUnosaNekihBrojeva();
                this.Cursor = Cursors.Default;
            }
            if (textBoxIzborArtiklaPremaKataloskomBroju.Text.Length > 0)
            {
                TABKaoENTER(e);
            }
        }
        private void textBoxIzborArtiklaPremaOznaci_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)//ukoliko se unese taster Enter
            {
                this.Cursor = Cursors.WaitCursor;
                artikalObjekat = new Artikal();
                artikalObjekat.PretragaArtikalaStavkaNalogaProdaje(textBoxIzborArtiklaPremaKataloskomBroju, textBoxIzborArtiklaPremaOznaci, textBoxKataloskiBroj,
                    textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla, textBoxArtikalNaziv, textBoxMPCenaArtikla, textBoxProdajnaCena);
                stvObjekat = new STV();
                stvObjekat.PopuniKontroleUStavkaNalogaProdajeFormi(comboBoxProdajnaJedinica, textBoxKataloskiBroj, textBoxPDVstopa, textBoxVPCenaArtikla, textBoxKolicinaArtikla,
                textBoxArtikalNaziv, textBoxIspodArtiklaNaziv, textBoxMPCenaArtikla, textBoxMPCenaArtikla, textBoxKolicina, textBoxProdajnaCena, textBoxProdajnaVrednost,
                textBoxKolicinaZaNivelaciju, textBoxVrednostNivelacije);
                ProveraPostojanostiStavke();
                PopunjavanjeTextBoxovaPosleUnosaNekihBrojeva();
                this.Cursor = Cursors.Default;
            }
            if (textBoxIzborArtiklaPremaKataloskomBroju.Text.Length > 0)
            {
                TABKaoENTER(e);
            }
        }

        private void buttonZatvori_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonDodaj_Click(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.PromenaUZAGPrilikomUnosaNoveStavkeDostavnica(0.00m, Convert.ToInt32(dostavnicaForma.IDzaglavlja));
            stvObjekat = new STV();
            stvObjekat.UnosNoveStavkeKrozNalogProdaje(comboBoxProdajnaJedinica, textBoxKolicina, textBoxProdajnaCena, textBoxProdajnaVrednost, textBoxKolicinaZaNivelaciju,
                textBoxVrednostNivelacije, textBoxPDVstopa);
            VratiSveKontroleNaPocetak();
        }
        private void VratiSveKontroleNaPocetak()
        {
            comboBoxProdajnaJedinica.SelectedIndex = 0;
            textBoxIzborArtiklaPremaKataloskomBroju.Text = "";
            textBoxIzborArtiklaPremaOznaci.Text = "";
            textBoxKolicina.Text = "0.000";
            textBoxProdajnaCena.Text = "0.00";
            textBoxProdajnaVrednost.Text = "0.00";
            textBoxKolicinaZaNivelaciju.Text = "0.000";
            textBoxVrednostNivelacije.Text = "0.00";
            IDartikla = "";
            IDstavke = "";
            comboBoxProdajnaJedinica.Focus();
        }

        private void comboBoxProdajnaJedinica_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxKolicina_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxProdajnaCena_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxKolicinaZaNivelaciju_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }

        private void buttonIzmeni_Click(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.PromenaUZAGPrilikomUnosaNoveStavkeDostavnica(0.00m, Convert.ToInt32(dostavnicaForma.IDzaglavlja));
            stvObjekat = new STV();
            stvObjekat.IzmenaStavkeKrozNalogProdaje(comboBoxProdajnaJedinica, textBoxKolicina, textBoxProdajnaCena, textBoxProdajnaVrednost, textBoxKolicinaZaNivelaciju,
                textBoxVrednostNivelacije, textBoxPDVstopa, textBoxKolicinaArtikla, Convert.ToInt32(IDstavke));
            if (Convert.ToDecimal(textBoxKolicina.Text) > 0)
            {
                this.Close();
            }
        }

    }
}
